package wechat_v3

import (
	"duoke/utils/gconv"
	"github.com/silenceper/wechat/v2"
	"github.com/silenceper/wechat/v2/cache"
	"github.com/silenceper/wechat/v2/miniprogram"
	miniConfig "github.com/silenceper/wechat/v2/miniprogram/config"
	"github.com/silenceper/wechat/v2/miniprogram/qrcode"
)

var SmallProgram = new(smallProgramService)

type smallProgramService struct{ Config *miniprogram.MiniProgram }

func (s *smallProgramService) NewConfig(req map[string]interface{}) *smallProgramService {
	// 创建微信实例
	wc := wechat.NewWechat()
	// 小程序配置参数
	cfg := &miniConfig.Config{
		AppID:     gconv.String(req["app_id"]),
		AppSecret: gconv.String(req["app_secret"]),
	}
	memoryCache := cache.NewMemory()
	wc.SetCache(memoryCache)
	s.Config = wc.GetMiniProgram(cfg)
	return s
}
func (s *smallProgramService) GetUnlimited(path string, scene string) ([]byte, error) {
	qrcodeService := s.Config.GetQRCode()
	width := 430 // 二维码宽度
	// 生成小程序码（永久有效，数量限制10万个）
	// 也可以使用CreateWXAQRCode方法生成临时小程序码
	response, err := qrcodeService.GetWXACodeUnlimit(qrcode.QRCoder{
		Page:  path, // 小程序页面路径
		Scene: scene,
		Width: width, // 二维码宽度
	})
	if err != nil {
		return nil, err
	}
	return response, nil
}
